package model;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class Usuario {

	private String nome;
	private String login;
	private String senha;
	
	private Map<Integer, Anuncio> classificado = new HashMap<Integer, Anuncio>();
	
	public Usuario() {
		super();
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public Map<Integer, Anuncio> getClassificado() {
		return classificado;
	}

	public void setClassificado(Map<Integer, Anuncio> classificado) {
		this.classificado = classificado;
	}
	
	public List<Anuncio> getListaAnuncios() {
		List<Anuncio> lista = new ArrayList<Anuncio>();
		Iterator<Anuncio> i = classificado.values().iterator();
		while ( i.hasNext() ) {
			lista.add( (Anuncio) i.next() );
		}
		return lista;
	}
	
	public void adicionaAnuncio(Anuncio novo) {
		
		novo.setVendedor(this.getNome());
		novo.setDataPublicacao(new Date());
		
		if (!classificado.containsKey(novo.getId())) {
			this.classificado.put(novo.getId(), novo);
		}
	}
	
	public void editaAnuncio(Anuncio anuncio) {
		
		// remove o antigo com os dados desatualizados
		if (classificado.containsKey(anuncio.getId())) {
			this.classificado.remove(anuncio.getId());
		}
		
		// adiciona o anuncio novamente com os dados atualizados
		this.classificado.put(anuncio.getId(), anuncio);
	}	
	
	public void removeAnuncio(Anuncio anuncio) {
		// remove o antigo com os dados desatualizados
		if (classificado.containsKey(anuncio.getId())) {
			this.classificado.remove(anuncio.getId());
		}
	}
	
	public Anuncio getAnuncioById(int id) {
		if (!this.classificado.containsKey(id)) {
			return null;
		}
		return this.classificado.get(id);
	}	
}
